// pages/member/refund/refund.js
var app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    language: "",

    order_id: "",
    refund_id: "",

    //处理方式
    refundTypes: [],
    //退款原因

    money: 0.0,

    typeData: 1,

    fileList1: [],//凭证图片
    isValue:'',


    order_status:0, //订单状态

    //退款商品
    returnAllGoodsList:[],
    returnGoolsList:[],

    //售后类型
    returnTypeItem:{},

    //收货状态
    receivingStatus:"not_received",

    //退货方式
    returnMethods:0,
    send_back_way:[],

    //退款原因
    returnReasons:"",

    //退款说明
    returnExplain:"",

    //京东上门取件相关信息
    jdTakeParts:null,
    jd_weight:'', 
    jd_length:'',
    jd_width:'',
    jd_height:'',

    start_time:'',
    end_time:'',

    jd_address:{
      pick_up_name : '',
      pick_up_tel : '',
      pick_up_province : 0,
      pick_up_city : 0,
      pick_up_district : 0,
      pick_up_street : 0,
      pick_up_address : '',
      addressName:""
    },
    refundable_freight: 0, //可退运费
    refundable_other: 0, //其他费用
    freight_price: "", //可退运费
    other_price: "", //其他费用
    showInstructions: false,
    //插件ID
    pluginid:'',
    orderType:'',
    refundData:{},
    uikey:''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    if(options.uikey){
      this.setData({
        uikey:options.uikey
      })
    }
    if (options.order_id) {
      this.setData({
        refund_id: options.order_id,
        order_id: options.order_id,
      });
    }
    if(options.value){
      this.setData({
        isValue:options.value
      });
    }
    if (options.type) {
      this.setData({
        typeData: options.type,
      });
    }
    if(options.refundType){
      this.setData({
        refundType: options.refundType,
      });
    }
    if(options.pluginid) {
      this.setData({
        pluginid: options.pluginid,
      });
    }
    if(options.orderType) { //周边游编辑信息
      this.setData({
        orderType: options.orderType,
      });
    }
    if(options.refundData) { //周边游编辑信息
      this.setData({
        refundData: options.refundData,
      });
    }
    if (options.type == 2) {
      //修改申请
      wx.setNavigationBarTitle({
        title: "修改申请",
      });
      this.getAlterInfo();
    } else {
      wx.setNavigationBarTitle({
        title: "售后申请",
      });
      this.getRefundInfo();
    }
    // this.openComponentsPop('pickUpTime');
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    let language = wx.getStorageSync("langIndex");
    this.setData({ language: language.en });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {},
  getAlterInfo() {
    let urlStr = app.getNetAddresss("refund.edit");
    urlStr += "&refund_id=" + this.data.order_id;
    app._getNetWork({
      url: urlStr,
      success: (resdata)=> {
        var res = resdata.data;
        if (res.result == 1) {
          var mydata = res.data;
          let changeData = {};
          changeData.refundable_freight = Number(mydata.refundable_freight) || 0; //可退运费
          changeData.refundable_other = Number(mydata.refundable_other) || 0; //其他费用
          changeData.freight_price = Number(mydata.refundApply.freight_price) || ""; //可退运费
          changeData.other_price = Number(mydata.refundApply.other_price) || ""; //其他费用
          changeData.money= Number(mydata.refundApply.apply_price).toFixed(2);
          changeData.refundTypes = mydata.refundTypes;
          changeData.send_back_way = mydata.send_back_way;
          if(mydata.refundApply.receive_status==1){
            changeData.receivingStatus = "received";
          }else {
            changeData.receivingStatus = "not_received";
          }
          this.selectComponent(`.receivingStatus`).setRadio(mydata.refundApply.receive_status);
          changeData.returnTypeItem = changeData.refundTypes[mydata.refundApply.refund_type];
          changeData.returnReasons = mydata.refundApply.reason;
          changeData.returnExplain =  mydata.refundApply.content;
          changeData.fileList1 = mydata.refundApply.images;
          changeData.returnMethods = mydata.refundApply.refund_way_type;
          this.selectComponent('.returnMethods').setRadio(changeData.returnMethods);
          changeData.returnGoolsList = mydata.refundApply.refund_order_goods;
          changeData.order_status = mydata.refundApply.order.status;
          
          if(changeData.returnMethods==1 && mydata.send_back_way_data){
            this.getJdTakeParts(mydata.send_back_way_data);
          }else if(changeData.returnMethods==1){
            this.getJdTakeParts();
          }
          this.setData(changeData);
          
        } else {
          app.tips(res.msg);
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  //获取退款信息
  getRefundInfo() {
    let urlStr = app.getNetAddresss("refund.apply");
    if(!app._isTextEmpty(this.data.refundType) && this.data.refundType=="installationSever"){
      urlStr= app.getNetAddresss("plugin.live-install.frontend.apply.index");  //安装服务
    }
    if(!app._isTextEmpty(this.data.isValue) && this.data.isValue == 54){
      // 盲盒
      urlStr= app.getNetAddresss("plugin.blind-box.api.apply.index");
    }
    console.log(this.data.refundType);
    if(this.data.typeData == 4) { //周边游售后信息
      urlStr= app.getNetAddresss("plugin.travel-around.frontend.refund.refund");
      if(this.data.orderType == 'travelAround') { //周边游回显
        let refundData = JSON.parse(this.data.refundData);
        this.setData({
          returnReasons: refundData.reason,
          returnExplain: refundData.content,
          'returnTypeItem.name': refundData.refund_type_name
        })
      }
    }
    urlStr += "&order_id=" + this.data.order_id;
    app._getNetWork({
      url: urlStr,
      success: (resdata)=> {
        var res = resdata.data;
        if (res.result == 1) {
          var mydata = res.data;
          console.log(mydata);
          this.setData({
            refundable_freight : Number(mydata.refundable_freight) || 0, //可退运费
            refundable_other : Number(mydata.refundable_other) || 0, //其他费用
            freight_price: Number(mydata.refundable_freight) || 0, //可退运费
            other_price: Number(mydata.refundable_other) || 0, //其他费用
            money: Number(mydata.order.price).toFixed(2) || Number(mydata?.order?.order_price).toFixed(2),
            refundTypes: mydata.refundTypes,
            order_status:mydata.order.status
          });
          console.log(this.data.money);
          console.log(mydata?.order?.order_price);
          if(this.data.order_status>=1 && mydata.support_batch){
            //support_batch 参数 true 支持单商品退款 false不支持， 先判断下订单是否支持选择商品退款
            // 不支持的就显示商品就行了，提交时也不用传 order_goods 参数
            this.openComponentsPop('returnGoods');
          }else {
            if(this.data.orderType !== 'travelAround') { //周边游售后编辑不选择售后类型
              this.openComponentsPop('returnType');
            }
          }
          if(this.data.pluginid == 154) {
            this.setData({
              money: Number(mydata?.order?.order_price).toFixed(2)
            })
          }
          if(this.data.pluginid != 154) { //周边游没有这个数据
            this.setData({
              send_back_way:mydata.send_back_way,
              returnMethods:mydata?.send_back_way[0] ? mydata.send_back_way[0].value : 0,
              returnAllGoodsList:mydata.order.order_goods.filter((item)=>{
                item.stepperValue = 1;
                return item.refundable_total != 0;//说明该商品已经都退款，可退款的数量为0
              })
            })
          }
          if(this.data.orderType === 'travelAround') { //周边游回显
            let refundData = JSON.parse(this.data.refundData);
            console.log(refundData);
            this.setData({
              returnTypeItem: this.data.refundTypes[refundData.refund_type]
            })
          }
          if(this.data.uikey){
            this.confrimReturnType({'detail':{'item':this.data.refundTypes[0]}})
          }
        } else {
          app.tips(res.msg);
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },

  //提交退款申请
  confirmRefund() {
    if (this.data.returnTypeItem.value!=2 && this.data.returnReasons=="") {
      return app.tips("请选择申请原因！");
    }
    if (this.data.refundable_freight > 0 && Number(this.data.freight_price) > this.data.refundable_freight) {
      return app.tips(`退款运费金额最大为${this.data.refundable_freight}`);
    }
    if (this.data.refundable_other > 0 && Number(this.data.other_price) > this.data.refundable_other) {
      return app.tips(`退款其他金额最大为${this.data.refundable_other}`);
    }

    let json = {
      order_id:this.data.order_id,
      refund_id:this.data.refund_id,
      refund_type:this.data.returnTypeItem.value,
      reason:this.data.returnReasons,
      content:this.data.returnExplain,
      receive_status:this.data.receivingStatus=="not_received" ? 0 : 1,
      refund_way_type:this.data.returnMethods,
      freight_price: this.data.freight_price || 0,
      other_price: this.data.other_price || 0
    };

    if(this.data.order_status>0){
      let arr=[];
      this.data.returnGoolsList.forEach(element => {
        let o = {};
        o.id = element.id;
        o.total = element.refund_total;
        arr.push(o);
      });
      if(arr.length > 0) json.order_goods = arr;
      json.part_refund = 1;
    }

    //上门取货
    if(this.data.returnMethods==1){
      if(!this.data.start_time || !this.data.end_time) return app.tips('请选择取件时间');
      Object.assign(json,this.data.jd_address);
      json.jd_weight = this.data.jd_weight;
      json.jd_length = this.data.jd_length;
      json.jd_width = this.data.jd_width;
      json.jd_height = this.data.jd_height;
      json.start_time = this.data.start_time;
      json.end_time = this.data.end_time;
    }
   

    let urlStr = "";
    if (this.data.typeData == 1) {
      urlStr = app.getNetAddresss("refund.apply.store");
    } else if (this.data.typeData == 3) {
      urlStr = app.getNetAddresss("plugin.snatch-regiment.api.order.refund");
    } else if (this.data.typeData == 4) {
      urlStr = app.getNetAddresss("plugin.travel-around.frontend.refund.refund.apply");
      json.price = Number(this.data.money);
      json.refund_id = '';
      if(this.data.orderType === 'travelAround') {
        let refundData = JSON.parse(this.data.refundData);
        json.refund_id = refundData.id;
        console.log(refundData);
      }
    } else {
      urlStr = app.getNetAddresss("refund.edit.store");
    }
    if(!app._isTextEmpty(this.data.refundType) && this.data.refundType=="installationSever"){
      urlStr= app.getNetAddresss("plugin.live-install.frontend.apply.store");  //安装服务
    }
    if(!app._isTextEmpty(this.data.isValue) && this.data.isValue == 54){
    // 盲盒
      urlStr= app.getNetAddresss("plugin.blind-box.api.apply.store");
    }
    if(this.data.fileList1.length > 0) {
      json.images = JSON.stringify(this.data.fileList1);
    }

    app._postNetWork({
      url: urlStr,
      showToastIn: false,
      data: json,
      success: function (resdata) {
        var res = resdata.data;
        if (res.result == 1) {
          wx.showToast({
            title: res.msg,
            icon: "none",
            duration: 1500,
            success: function () {
              setTimeout(function () {
                //要延时执行的代码
                wx.navigateBack({
                  delta: 1,
                });
              }, 1500); //延迟时间
            },
          });
        } else {
          app.tips(res.msg);
        }
      },
      fail: function (res) {},
    });
  },
  updateImages(e) {
    this.setData({
      fileList1: e.detail
    });
  },

  openComponentsPop(evt) {
    if(this.data.uikey && evt  === 'returnType'){
      return false
    }
    let name=evt.currentTarget ? evt.currentTarget.dataset.name : evt;
    this.selectComponent(`.${name}`).setPopShow();
  },

  confrimReturnType(evt){
    let item = evt.detail.item;
    if(this.data.returnTypeItem.value == item.value) return;
    let changeData={};
    if(item.value !=0 ){
      changeData.receivingStatus="received";
    }
    changeData.returnTypeItem = item;
    changeData.returnReasons="";
    this.setData(changeData);
  },
  confirmReturnReason(evt){
    let text = evt.detail.text;
    this.setData({returnReasons:text});
  },
  confrimReturnGoods(evt){
    this.setData({
      returnGoolsList:evt.detail.modelsArr,
      money:evt.detail.total_price
    });
    this.openComponentsPop('returnType');
  },
  confirmReceivingStatus(evt){
    this.setData({
      receivingStatus:evt.detail.status
    });
  },
  confirmReturnMethods(evt){
    this.setData({
      returnMethods:evt.detail.status
    });
    if(this.data.returnMethods == 1 && this.data.jdTakeParts==null){
      this.getJdTakeParts();
    }
  },
  confirmPickUpTime(evt){
    this.setData({
      start_time:evt.detail.start_time,
      end_time:evt.detail.end_time
    });
  },

  confirmEditAddress(evt){
    this.setData({
      jd_address:evt.detail
    });
    let _json = {
      province_id: evt.detail.pick_up_province,
      city_id: evt.detail.pick_up_city,
      district_id: evt.detail.pick_up_district,
      street_id: evt.detail.pick_up_street,
      address: evt.detail.pick_up_address
    };
    this.getPickUpTime(_json);
  },

  //获取京东上门安装默认数据
  getJdTakeParts(defaultData = null){
    let urlStr = app.getNetAddresss("plugin.jd-take-parts.frontend.refund.get-default-data");
    app._postNetWork({
      url: urlStr,
      data: { order_id:this.data.order_id},
      success:  (resdata)=> {
        var res = resdata.data;
        if (res.result == 1) {
          // this.selectComponent(`.pickUpTime`).setListData(res.data.time_list);
          if(defaultData == null){
            this.setData({
              jdTakeParts:res.data,
              jd_height:res.data.default.default_height,
              jd_length:res.data.default.default_length,
              jd_weight:res.data.default.default_weight,
              jd_width:res.data.default.default_width,
            });
            this.selectComponent(`.editAddress`).setFormData(res.data.order_address);
            this.getPickUpTime(res.data.order_address);
          }else {
            this.setData({
              jdTakeParts:res.data,
              jd_height:defaultData.jd_height,
              jd_length:defaultData.jd_length,
              jd_weight:defaultData.jd_weight,
              jd_width:defaultData.jd_width,
              start_time:defaultData.start_time,
              end_time:defaultData.end_time,
            });
            let address={
              realname:defaultData.pick_up_name,
              mobile:defaultData.pick_up_tel,
              province:defaultData.pick_up_province_name,
              city:defaultData.pick_up_city_name,
              district:defaultData.pick_up_district_name,
              street:defaultData.pick_up_street_name,
              province_id:defaultData.pick_up_province,
              city_id:defaultData.pick_up_city,
              district_id:defaultData.pick_up_district,
              street_id:defaultData.pick_up_street,
              address:defaultData.pick_up_address
            };
            this.selectComponent(`.editAddress`).setFormData(address);
            this.getPickUpTime(address);
          }
          
        } else {
          app.tips(res.msg);
        }
      },
      fail: function (res) {},
    });
  },
  getPickUpTime(_data) {
    let _json = {
      pick_up_province: _data.province_id,
      pick_up_city: _data.city_id,
      pick_up_district: _data.district_id,
      pick_up_street: _data.street_id,
      pick_up_address: _data.address
    };

    let urlStr = app.getNetAddresss("plugin.jd-take-parts.frontend.refund.get-pickup-in-time");
    app._postNetWork({
      url: urlStr,
      data: _json,
      success:  (resdata)=> {
        var res = resdata.data;
        if (res.result == 1) {
          this.selectComponent(`.pickUpTime`).setListData(res.data.time_list);
        } else {
          app.tips(res.msg);
        }
      },
      fail: function (res) {},
    });
  },
  showInstructionsFn() {
    this.setData({
      showInstructions: true
    })
  },
  onCloseInstructions() {
    this.setData({
      showInstructions: false
    })
  },
  onChangeFreightPrice(event){
    this.setData({
      freight_price: event.detail
    })
  },
  onChangeOtherPrice(event){
    this.setData({
      other_price: event.detail
    })
  }
});
